
**************************************************************************
***    TABLE 1: Voter Approval and Alignment with Pivotal Legislators   **
***     and 															**
***    TABLE S2: Cutpoints for ordered probit models in Table 1  		**
**************************************************************************

* Load data for Survey 1
import delimited "Survey_Experiment_1.csv", clear 

gen exclude=1 if finished==0 | durationinseconds<=120
	drop if exclude==1
	
** Generate variables for analysis
gen aligned=0 if pf=="Kill" & min_wage==1 | pf=="Pass" & min_wage==2
	replace aligned=1 if pf=="Kill" & min_wage==2 | pf=="Pass" & min_wage==1

gen pivotal=1 if tr_pivot=="tr_50" | tr_pivot=="tr_60"
	replace pivotal=0 if tr_pivot=="tr_control"
gen align_pivotal=aligned*pivotal
	
gen tr50=tr_pivot=="tr_50"
gen t50_align=tr50*aligned

gen tr60=tr_pivot=="tr_60"
gen t60_align=tr60*aligned

** Flip the scale so that higher values indicate higher levels of approval
gen dv_approve = abs(pivot_approve - 7)

* Model 1
oprobit dv_approve aligned pivotal align_pivotal

* Model 2
oprobit dv_approve aligned tr50 t50_align tr60 t60_align

* Load survey 2 data for models 3 and 4
import delimited "Survey_Experiment_2.csv", clear 

*Note: Lucid exlcudes if less than 10% median LOI for Theorem orders (median is 10 min so exclude if less than 1 min)
*Excluded if not finished, if did not consent, if under 18, or if outside US
gen exclude=1 if finished==0 | q1==2 | q2==1 | q5==53
	drop if exclude==1

** Generate Variables for Analysis
gen aligned=0 if pf=="Kill" & min_wage==1 | pf=="Pass" & min_wage==2
	replace aligned=1 if pf=="Kill" & min_wage==2 | pf=="Pass" & min_wage==1

gen pivotal=1 if tr_pivot==1
	replace pivotal=0 if tr_pivot==0
gen align_pivotal=aligned*pivotal

gen party_label=1 if tr_rep==1 | tr_dem==1
	replace party_label=0 if tr_rep==0 & tr_dem==0
	
gen align_pid=0
	replace align_pid=1 if (tr_dem==1 & (q23==1 | q29==1)) | (tr_rep==1 & (q23==2 | q29==2))

gen notalign_pid=0
	replace notalign_pid=1 if (tr_rep==1 & (q23==1 | q29==1)) | (tr_dem==1 & (q23==2 | q29==2))

gen pure_ind=0
	replace pure_ind=1 if q29==3
	
** Flip the scale so that higher values indicate higher levels of approval
gen dv_approve = abs(pivot_approve - 7)

* Model 3
oprobit dv_approve aligned pivotal align_pivotal

* Model 4
oprobit dv_approve aligned pivotal align_pivotal align_pid notalign_pid tr_female tr_experience if pure_ind==0


*****************************************************************************************************
** Table S3: Average Approval Score by Treatment and Alignment with 95% CIs and T-Test for Study 2 **
*****************************************************************************************************

* Load data for Survey 1
import delimited "Survey_Experiment_1.csv", clear 

gen exclude=1 if finished==0 | durationinseconds<=120
	drop if exclude==1
	
** Generate Variables for Analysis
gen aligned=0 if pf=="Kill" & min_wage==1 | pf=="Pass" & min_wage==2
	replace aligned=1 if pf=="Kill" & min_wage==2 | pf=="Pass" & min_wage==1
	
gen tr50=tr_pivot=="tr_50"

gen tr60=tr_pivot=="tr_60"

** Flip the scale so that higher values indicate higher levels of approval
gen dv_approve = abs(pivot_approve - 7)

* Clean data
recast int aligned
recast int dv_approve

ttest dv_approve if tr_pivot == "tr_control", by(aligned) 
ttest dv_approve if tr_pivot == "tr_60", by(aligned) 
ttest dv_approve if tr_pivot == "tr_50", by(aligned) 


*****************************************************************************************************
** Table S4: Average Approval Score by Treatment and Alignment with 95% CIs and T-Test for Study 2 **
*****************************************************************************************************

* Load Survey 2 data 
import delimited "Survey_Experiment_2.csv", clear 

*Note: Lucid exlcudes if less than 10% median LOI for Theorem orders (median is 10 min so exclude if less than 1 min)
*Excluded if not finished, if did not consent, if under 18, or if outside US
gen exclude=1 if finished==0 | q1==2 | q2==1 | q5==53
	drop if exclude==1

** Generate Variables for Analysis
gen aligned=0 if pf=="Kill" & min_wage==1 | pf=="Pass" & min_wage==2
	replace aligned=1 if pf=="Kill" & min_wage==2 | pf=="Pass" & min_wage==1

** Flip the scale so that higher values indicate higher levels of approval
gen dv_approve = abs(pivot_approve - 7)

* Clean data
recast int aligned
recast int dv_approve

ttest dv_approve if tr_pivot == 0, by(aligned) 
ttest dv_approve if tr_pivot == 1, by(aligned) 

*****************************************************************
***    TABLE S5: Legislator Approval and Alignment, using OLS ***
*****************************************************************

* Load data for Survey 1
import delimited "Survey_Experiment_1.csv", clear 

gen exclude=1 if finished==0 | durationinseconds<=120
	drop if exclude==1
	
** Generate Variables for Analysis
gen aligned=0 if pf=="Kill" & min_wage==1 | pf=="Pass" & min_wage==2
	replace aligned=1 if pf=="Kill" & min_wage==2 | pf=="Pass" & min_wage==1

gen pivotal=1 if tr_pivot=="tr_50" | tr_pivot=="tr_60"
	replace pivotal=0 if tr_pivot=="tr_control"
gen align_pivotal=aligned*pivotal
	
gen tr50=tr_pivot=="tr_50"
gen t50_align=tr50*aligned

gen tr60=tr_pivot=="tr_60"
gen t60_align=tr60*aligned

** Flip the scale so that higher values indicate higher levels of approval
gen dv_approve = abs(pivot_approve - 7)

* Model 1
regress dv_approve aligned pivotal align_pivotal

* Model 2
regress dv_approve aligned tr50 t50_align tr60 t60_align

* Load Survey 2 data for Models 3 and 4
import delimited "Survey_Experiment_2.csv", clear 

*Note: Lucid exlcudes if less than 10% median LOI for Theorem orders (median is 10 min so exclude if less than 1 min)
*Excluded if not finished, if did not consent, if under 18, or if outside US
gen exclude=1 if finished==0 | q1==2 | q2==1 | q5==53
	drop if exclude==1

** Generate Variables for Analysis
gen aligned=0 if pf=="Kill" & min_wage==1 | pf=="Pass" & min_wage==2
	replace aligned=1 if pf=="Kill" & min_wage==2 | pf=="Pass" & min_wage==1

gen pivotal=1 if tr_pivot==1
	replace pivotal=0 if tr_pivot==0
gen align_pivotal=aligned*pivotal

gen party_label=1 if tr_rep==1 | tr_dem==1
	replace party_label=0 if tr_rep==0 & tr_dem==0
	
gen align_pid=0
	replace align_pid=1 if (tr_dem==1 & (q23==1 | q29==1)) | (tr_rep==1 & (q23==2 | q29==2))

gen notalign_pid=0
	replace notalign_pid=1 if (tr_rep==1 & (q23==1 | q29==1)) | (tr_dem==1 & (q23==2 | q29==2))

gen pure_ind=0
	replace pure_ind=1 if q29==3
*create both because 0 on both is control, no party info. Note that half sample in control.

** Flip the scale so that higher values indicate higher levels of approval
gen dv_approve = abs(pivot_approve - 7)

* Model 3
regress dv_approve aligned pivotal align_pivotal

* Model 4
regress dv_approve aligned pivotal align_pivotal align_pid notalign_pid tr_female tr_experience if pure_ind==0
test align_pid - notalign_pid = 0

*************************************************************************
***    Table 2: Respondent Belief that Kolbach's Vote was Important   ***
*************************************************************************

* Load data for Survey 1
import delimited "Survey_Experiment_1.csv", clear 

gen exclude=1 if finished==0 | durationinseconds<=120
	drop if exclude==1
	
** Generate Variables for Analysis

gen pivotal=1 if tr_pivot=="tr_50" | tr_pivot=="tr_60"
	replace pivotal=0 if tr_pivot=="tr_control"
	
gen tr50=tr_pivot=="tr_50"

gen tr60=tr_pivot=="tr_60"

*binary version of importance
gen dv_important=1 if pivot_manipulationch>=1 & pivot_manipulationch<=3
	replace dv_important=0 if pivot_manipulationch>=4 & pivot_manipulationch<=6

*ordered version of importance, higher = more important, dropping unsure
gen dv_important_cat = (pivot_manipulationch - 5)*(-1)
replace dv_important_cat = . if pivot_manipulationch==6
	
* Model 1
oprobit dv_important_cat pivotal

* Model 2
oprobit dv_important_cat  tr50  tr60  

* Load Survey 2 data for Model 3 
import delimited "Survey_Experiment_2.csv", clear 

*Note: Lucid exlcudes if less than 10% median LOI for Theorem orders (median is 10 min so exclude if less than 1 min)
*Excluded if not finished, if did not consent, if under 18, or if outside US
gen exclude=1 if finished==0 | q1==2 | q2==1 | q5==53
	drop if exclude==1

** Generate Variables for Analysis
gen pivotal=1 if tr_pivot==1
	replace pivotal=0 if tr_pivot==0

*create both because 0 on both is control, no party info. Note that half sample in control.

gen dv_important=1 if pivot_manipulationch>=1 & pivot_manipulationch<=3
	replace dv_important=0 if pivot_manipulationch>=4 & pivot_manipulationch<=6

*ordered version of importance, higher = more important, dropping unsure(?)
gen dv_important_cat = (pivot_manipulationch - 5)*(-1)
replace dv_important_cat = . if pivot_manipulationch==6
	
* Model 3
oprobit dv_important_cat pivotal

***********************************************************************************************************************
***  TABLE S7: Respondent Belief that Kolbach's Vote was Important, using Probit for binary and OLS for continuous  ***
***********************************************************************************************************************

* Load data for Survey 1
import delimited "Survey_Experiment_1.csv", clear 

gen exclude=1 if finished==0 | durationinseconds<=120
	drop if exclude==1
	
** Generate Variables for Analysis
gen aligned=0 if pf=="Kill" & min_wage==1 | pf=="Pass" & min_wage==2
	replace aligned=1 if pf=="Kill" & min_wage==2 | pf=="Pass" & min_wage==1

gen pivotal=1 if tr_pivot=="tr_50" | tr_pivot=="tr_60"
	replace pivotal=0 if tr_pivot=="tr_control"
	
gen tr50=tr_pivot=="tr_50"

gen tr60=tr_pivot=="tr_60"

gen dv_important=1 if pivot_manipulationch>=1 & pivot_manipulationch<=3
	replace dv_important=0 if pivot_manipulationch>=4 & pivot_manipulationch<=6

gen dv_important_cat = (pivot_manipulationch - 5)*(-1)
replace dv_important_cat = . if pivot_manipulationch==6

* Model 1
reg dv_important pivotal

* Model 2
reg dv_important tr50  tr60 

* Load Survey 2 data for Model 3 
import delimited "Survey_Experiment_2.csv", clear 

*Note: Lucid exlcudes if less than 10% median LOI for Theorem orders (median is 10 min so exclude if less than 1 min)
*Excluded if not finished, if did not consent, if under 18, or if outside US
gen exclude=1 if finished==0 | q1==2 | q2==1 | q5==53
	drop if exclude==1

** Generate Variables for Analysis

gen pivotal=1 if tr_pivot==1
	replace pivotal=0 if tr_pivot==0

** Create both because 0 on both is control, no party info. Note that half sample in control.

gen dv_important=1 if pivot_manipulationch>=1 & pivot_manipulationch<=3
	replace dv_important=0 if pivot_manipulationch>=4 & pivot_manipulationch<=6

gen dv_important_cat = (pivot_manipulationch - 5)*(-1)
	replace dv_important_cat = . if pivot_manipulationch==6
	
* Model 3
reg dv_important pivotal


********************************************************************************************
***    Table S8: Pivotality and Constituent Knowledge of Senator Vote, for all Senators ****
********************************************************************************************

* Load cleaned CES data
use "data_feb_27_24.dta", clear

* Model 1 of Table S7
regress guess_correct fili_pivot party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent if filibuster_dummy==1, cluster(case_id) 
outreg2 using "Results/Tab_s7.doc", replace ctitle(Model 1) dec(3) label

* Model 2 of Table S7
regress guess_correct top_5_filibuster party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent if filibuster_dummy==1, cluster(case_id) 
outreg2 using "Results/Tab_s7.doc", append ctitle(Model 2) dec(3) label

* Create factor variable for state fixed-effects
encode state, generate (state_factor)

* Model 3 of Table S7
regress guess_correct fili_pivot party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent i.state_factor if filibuster_dummy==1, cluster(case_id)
outreg2 using "Results/Tab_s7.doc", append ctitle(Model 3) dec(3) label

* Model 4 of Table S7
regress guess_correct top_5_filibuster party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent i.state_factor if filibuster_dummy==1, cluster(case_id)
outreg2 using "Results/Tab_s7.doc", append ctitle(Model 4) dec(3) label

**************************************************************************************
***    Table 3:   Pivotality and Constituent Knowledge of Moderate Senators' Votes  **
**************************************************************************************

* Load cleaned CES data
use "data_feb_27_24.dta", clear

* Model 1 of Table 3
regress guess_correct fili_pivot party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent if moderatehalf == 1 & filibuster_dummy==1, cluster(case_id) 
outreg2 using "Results/Tab3_Main.doc", replace ctitle(Model 1) dec(3) label

* Model 2 of Table 3
regress guess_correct top_5_filibuster party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent if moderatehalf == 1 & filibuster_dummy==1, cluster(case_id) 
outreg2 using "Results/Tab3_Main.doc", append ctitle(Model 2) dec(3) label

* Create factor variable for state fixed-effects
encode state, generate (state_factor)

* Model 3 of Table 3
reg guess_correct fili_pivot party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent i.state_factor if moderatehalf == 1 & filibuster_dummy==1, cluster(case_id)
outreg2 using "Results/Tab3_Main.doc", append ctitle(Model 3) dec(3) label

* Model 4 of Table 3
regress guess_correct top_5_filibuster party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent i.state_factor if moderatehalf == 1 & filibuster_dummy==1, cluster(case_id)
outreg2 using "Results/Tab3_Main.doc", append ctitle(Model 4) dec(3) label

*************************************************************************************************************
***    Table S10: Pivotality and Constituent Knowledge of Moderate Senators' Votes, using probit models  ****
*************************************************************************************************************

* Load cleaned CES data
use "data_feb_27_24.dta", clear

* Model 1 of Table S10
probit guess_correct fili_pivot party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent if moderatehalf == 1 & filibuster_dummy==1, cluster(case_id) 
outreg2 using "Results/Tab_s10.doc", replace ctitle(Model 1) dec(3) label

* Model 2 of Table S10
probit guess_correct top_5_filibuster party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent if moderatehalf == 1 & filibuster_dummy==1, cluster(case_id) 
outreg2 using "Results/Tab_s10.doc", append ctitle(Model 2) dec(3) label

* Create factor variable for state fixed-effects
encode state, generate (state_factor)

* Model 3 of Table S10
probit guess_correct fili_pivot party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent i.state_factor if moderatehalf == 1 & filibuster_dummy==1, cluster(case_id)
outreg2 using "Results/Tab_s10.doc", append ctitle(Model 3) dec(3) label

* Model 4 of Table S10
probit guess_correct top_5_filibuster party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent i.state_factor if moderatehalf == 1 & filibuster_dummy==1, cluster(case_id)
outreg2 using "Results/Tab_s10.doc", append ctitle(Model 4) dec(3) label


**************************************************************************************
***    Table S11:   Pivotality and Constituent Knowledge Using the Median Pivot     **
**************************************************************************************

* Load cleaned CES data
use "data_feb_27_24.dta", clear

* Model 1 of Table 3
regress guess_correct median_pivot party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent if moderatehalf == 1 & filibuster_dummy==0, cluster(case_id) 
outreg2 using "Results/TabCES_Median.doc", replace ctitle(Model 1) dec(3) label

* Model 2 of Table 3
regress guess_correct top_5_median party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent if moderatehalf == 1 & filibuster_dummy==0, cluster(case_id) 
outreg2 using "Results/TabCES_Median.doc", append ctitle(Model 2) dec(3) label

* Create factor variable for state fixed-effects
encode state, generate (state_factor)

* Model 3 of Table 3
reg guess_correct median_pivot party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent i.state_factor if moderatehalf == 1 & filibuster_dummy==0, cluster(case_id)
outreg2 using "Results/TabCES_Median.doc", append ctitle(Model 3) dec(3) label

* Model 4 of Table 3
regress guess_correct top_5_median party_code meddist majority freshman seniority maj_leader min_leader latino afam pres_win_percent i.state_factor if moderatehalf == 1 & filibuster_dummy==0, cluster(case_id)
outreg2 using "Results/TabCES_Median.doc", append ctitle(Model 4) dec(3) label


********************
***     END      ***
********************
